widget: Warn if children are left in finalize()
authorTimm Bäder <mail@baedert.org>
Wed, 7 Dec 2016 13:05:34 +0000 (14:05 +0100)
committerTimm Bäder <mail@baedert.org>
Sat, 7 Jan 2017 16:19:30 +0000 (17:19 +0100)
gtk/gtkwidget.c

index c644ac0f7b091b86d1d76482a4c4c7d1b9c2c7e7..bbf5f3ca16e6345c0e917d233e8698ca4020d4a7 100644 (file)
@@ -10615,6 +10615,19 @@ gtk_widget_finalize (GObject *object)
   g_list_free_full (priv->event_controllers, g_free);
   priv->event_controllers = NULL;
 
+  if (_gtk_widget_get_first_child (widget) != NULL)
+    {
+      GtkWidget *child;
+      g_warning ("Finalizing %s %p, but it still has children left:",
+                 gtk_widget_get_name (widget), widget);
+      for (child = _gtk_widget_get_first_child (widget);
+           child != NULL;
+           child = _gtk_widget_get_next_sibling (child))
+        {
+          g_warning ("   - %s %p", gtk_widget_get_name (child), child);
+        }
+    }
+
   if (g_object_is_floating (object))
     g_warning ("A floating object was finalized. This means that someone\n"
                "called g_object_unref() on an object that had only a floating\n"